﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace ifunction.JPush
{
    /// <summary>
    /// Class PushMessageCriteria.
    /// </summary>
    [DataContract]
    public class PushMessageCriteria
    {
        /// <summary>
        /// Gets or sets the message identifier.
        /// </summary>
        /// <value>The message identifier.</value>
        [DataMember]
        public string MessageId { get; set; }

        /// <summary>
        /// Gets or sets the content.
        /// </summary>
        /// <value>The content.</value>
        [DataMember]
        public string Content { get; set; }

        /// <summary>
        /// Gets or sets the platform.
        /// </summary>
        /// <value>The platform.</value>
        [DataMember]
        public PushPlatform? Platform { get; set; }

        /// <summary>
        /// Gets or sets the receiver value.
        /// </summary>
        /// <value>The receiver value.</value>
        [DataMember]
        public string ReceiverValue { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance is test.
        /// For iOS only.
        /// Default: false.
        /// </summary>
        /// <value><c>true</c> if this instance is test; otherwise, <c>false</c>.</value>
        [DataMember]
        public bool? IsTestEnvironment { get; set; }

        /// <summary>
        /// Gets or sets from UTC stamp.
        /// </summary>
        /// <value>From UTC stamp.</value>
        [DataMember]
        public DateTime? FromUtcStamp { get; set; }

        /// <summary>
        /// Gets or sets to UTC stamp.
        /// </summary>
        /// <value>To UTC stamp.</value>
        [DataMember]
        public DateTime? ToUtcStamp { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [order desc].
        /// </summary>
        /// <value><c>true</c> if [order desc]; otherwise, <c>false</c>.</value>
        [DataMember]
        public bool OrderDesc { get; set; }
    }
}
